home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / c80tcog.lbr / XDPB.CQ / xdpb.c
Text File  |  1985-08-09  |  3KB  |  85 lines

  1. /* xdpb.c - dump the CP/M disk param block in hex and ASCII    */
  2. /* Version 1.2 1982/12/18 19:56    */
  3. /*
  4.     Inspired by the assembly language routine ACTDIR in
  5. David E. Cortesi's INSIDE CP/M: A Guide for Users and Programmers,
  6. Holt, Rinehart and Winston, New York 1982, p. 216-218.
  7.  
  8. C version:
  9.  
  10.     Copyright 1982    William G. Hutchison, Jr.
  11.             P.O. Box 278
  12.             Exton, PA 19341-0278
  13.             U.S.A.
  14.  
  15.             CompuServe 70665,1307
  16.  
  17.  
  18.  
  19.  
  20.     This  program  may be used freely for any non-commercial
  21. purpose, provided that the user does  not  remove  or  alter
  22. this notice or the copyright statement.
  23.     Those  who  wish  to  sell  or lease this program, or to
  24. incorporate it into a product  for  sale  or  lease,  should
  25. apply to the author (above) for licensing information.
  26.     This  program  is  not  covered  by  a  warranty, either
  27. express or implied. The author shall not be responsible  for
  28. any  damages (including consequential) caused by reliance on
  29. the  materials  presented,  including  but  not  limited  to
  30. typographical errors or arithmetic errors.
  31.  
  32.     This version is for C/80 Version 2 from Software Toolworks.
  33.  
  34.  
  35.  */
  36.  
  37. #include "c80def.h"
  38. #define uns unsigned
  39. #include "printf.c"
  40.  
  41. #include "dpb.h"
  42. #include "fcb.h"
  43. static struct fcb *cpmfcb= 0x5C;
  44.  
  45. #include "bdos.c"
  46. #define DEFAULT_DRIVE 25
  47. #define DISK_PARAMETERS 31
  48. #define SELECT_DRIVE 14
  49.  
  50. #include "davcor.c"
  51.  
  52. main()
  53. {
  54. int drive;
  55. struct dpb *x;
  56.  
  57. static char Version[]= "Version 1.2 1982/12/18 19:56";
  58. static char Notice[]= "Copyright 1982 William G. Hutchison, Jr.";
  59.  
  60. printf("%s\n%s\n\n", Version, Notice);
  61.  
  62. if    ((drive= cpmfcb->drv) == 0)
  63.     drive= bdos(DEFAULT_DRIVE, 0);
  64. else
  65.     drive--        /* 1..26 => 0..25 */;
  66.  
  67. bdos(SELECT_DRIVE, drive);
  68. x= bdos(DISK_PARAMETERS, 0);
  69.  
  70. printf("Disk Parameter block for drive %c.\n", 'A'+drive);
  71. printf("SPT: %4x records per track\n",            x->spt);
  72. printf("BSH:   %2x recno >> BSH == block number\n",    x->bsh & 0xFF);
  73. printf("BLM:   %2x recno & BLM == record in block\n",    x->blm & 0xFF);
  74. printf("EXM:   %2x logical extent vs. physical\n",    x->exm & 0xFF);
  75. printf("DSM: %4x highest block # (origin 0)\n",        x->dsm);
  76. printf("DRM: %4x highest directory number (origin 0)\n",x->drm);
  77. printf("ALV: %4x bits reserving directory blocks\n",    x->alv);
  78. printf("CKS: %4x size of check vector in bytes\n",    x->cks);
  79. printf("OFF: %4x number of reserved tracks.\n",        x->off);
  80. printf("\n");
  81.  
  82. printf("%4x:\n", x);
  83. hex_dump(x, DPB_SIZE);
  84. }
  85.